package dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import dominio.Rodamiento;

public class RodamientosDAO {
	private static String query_buscarRodamiento = "from Rodamiento r where r.serie = :serie and r.sufijo = :sufijo and r.marca = :marca and r.pais = :pais";
	private static String query_listarRodamientos = "from Rodamiento";

	private static RodamientosDAO instancia = null;

	public static RodamientosDAO getInstance() {
		if (instancia == null)
			instancia = new RodamientosDAO();
		return instancia;
	}

	protected RodamientosDAO() {}

	public int guardarRodamiento(Rodamiento rodamiento) {
		Session s = HibernateDAO.getInstance().getSession();
		s.beginTransaction();
		s.saveOrUpdate(rodamiento);
		s.getTransaction().commit();
		return rodamiento.getId();
	}

	public Rodamiento buscarRodamiento(String serie, String sufijo, String marca, String pais) {
		Session s = HibernateDAO.getInstance().getSession();
		Query query = s.createQuery(query_buscarRodamiento);
		query.setParameter("serie", serie);
		query.setParameter("sufijo", sufijo);
		query.setParameter("marca", marca);
		query.setParameter("pais", pais);
		query.setMaxResults(1);
		Rodamiento r = (Rodamiento) query.uniqueResult();
		return r;
	}

	@SuppressWarnings("unchecked")
	public List<Rodamiento> listarRodamientos() {
		Session s = HibernateDAO.getInstance().getSession();
		return s.createQuery(query_listarRodamientos).list();
	}
}